openzipkin / zipkin-aws

Reporters and collectors for use in Amazon's cloud
Apache License 2.0
69 stars 34 forks source link

Possible to rename the "zipkin" dynamo table name? #165

Closed slikk66 closed 3 years ago

slikk66 commented 4 years ago

I'd like to create the table separately and apply autoscaling to it, I just launched zipkin-aws for first time and see it needs access to dynamodb:createTable on "zipkin" table.

I haven't been able to find much information about this.. I'd like to be able to create the table with a better name like company-environment-zipkin and then update the server to use that table.

Is it possible to change the name of the table zipkin wants to use via an environment variable?

How about just any more information in general about this dynamo table and how I can modify/change it or its usage?

Thanks!

codefromthecrypt commented 4 years ago

I dont understand.. we dont have dynamo code here..

slikk66 commented 4 years ago

I'm using https://github.com/openzipkin/zipkin-aws with collector: https://github.com/openzipkin/zipkin-aws/tree/master/collector-kinesis and elasticsearch storage.. there's definitely a dynamo table being created..

root@05f6b3a3cce0:/data# curl http://zipkin.us-east-1.prod.mycompany.co.int:8080/health
{
  "status" : "UP",
  "zipkin" : {
    "status" : "UP",
    "details" : {
      "zipkin2.collector.kinesis.KinesisCollector@ce561cc" : {
        "status" : "UP"
      },
      "ElasticsearchStorage{initialEndpoints=aws://us-east-1/prod-main, index=zipkin}" : {
        "status" : "UP"
      }
    }
  }

root@05f6b3a3cce0:/data# aws dynamodb describe-table --table-name zipkin
{
    "Table": {
        "AttributeDefinitions": [
            {
                "AttributeName": "leaseKey",
                "AttributeType": "S"
            }
        ],
        "TableName": "zipkin",
        "KeySchema": [
            {
                "AttributeName": "leaseKey",
                "KeyType": "HASH"
            }
        ],
        "TableStatus": "ACTIVE",
        "CreationDateTime": 1587418518.871,
        "ProvisionedThroughput": {
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 10,
            "WriteCapacityUnits": 10
        },
        "TableSizeBytes": 193,
        "ItemCount": 1,
        "TableArn": "arn:aws:dynamodb:us-east-1:123456789:table/zipkin",
        "TableId": "aaaaaaaa-86e9-dddd-a561-39830dfffff"
    }
}

I sure didn't create it!

anuraaga commented 4 years ago

Thanks for clarifying! I found this document that explains the behavior of the Kinesis client automatically creating a table for state tracking.

https://docs.aws.amazon.com/streams/latest/dev/kinesis-record-processor-ddb.html

The name is the same as the application name, and I presume we can create a knob for it, will dig further later.

slikk66 commented 4 years ago

Great! ok thanks for looking into it.

The main parts I'm concerned with is being able to rename it more specifically for different environments (is there another variable I can change that will rename the service, and then the table?) and also to implement IOPS and scaling on my end. Ideal would be for me to setup my own table (called whatever I want) add scaling to it, and then update the zipkin install with the new table name and have it use it directly without trying to create its own table.

Is there another forum I should be posting this in?

Thanks for your help @anuraaga ! 👍

siddshuk commented 3 years ago

@slikk66 Not sure if you found the answer, but I was able to configure the application name by setting the KINESIS_APP_NAME environment variable. And as mentioned by @anuraaga, the dynamo table name is same as the application name.

Hope that helps!