kubernetes-graphite-cluster, 在Kubernetes之上,StatsD + Graphite 集群

分享于 

6分钟阅读

GitHub

  繁體
StatsD + Graphite cluster on top of Kubernetes
  • 源代码名称:kubernetes-graphite-cluster
  • 源代码网址:http://www.github.com/nanit/kubernetes-graphite-cluster
  • kubernetes-graphite-cluster源代码文档
  • kubernetes-graphite-cluster源代码下载
  • Git URL:
    git://www.github.com/nanit/kubernetes-graphite-cluster.git
    Git Clone代码到本地:
    git clone http://www.github.com/nanit/kubernetes-graphite-cluster
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/nanit/kubernetes-graphite-cluster
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    kubernetes-graphite-cluster

    一个部署就绪 Graphite 集群位于Kubernetes之上。 在这里找到完整的细节

    用户定义内容:

    • 用于度量收集的statsd代理部署和服务
    • 用于度量聚合和发货的statsd守护进程部署和服务
    • 为多个数据节点提供 deployment部署和服务扩展
    • 以有状态集为状态集的Graphite 数据节点
    • 用作数据节点的查询网关的Graphite 查询 node

    要求:

    • Kubernetes版本 1.5. X ( 我们使用 StatefulSet )
    • kubectl配置为使用你的Kubernetes API
    • Tested/GKE 上的Kubernetes 1.5.x/1.6.( 没有 RBAC ) 测试。
    • 可选- 访问你自己的Docker 存储库存储你自己的图像。 如果你不想使用这里提供的默认图像,那就很重要了。

    环境变量:

    名称默认值目
    DOCKER_REPOSITORYnanit如果你想构建和使用定制的Docker 存储库,。 nanit图像是 public,所以离开它就可以从盒子中工作。
    SUDOsudoDocker 命令是否应该使用sudo前缀。 更改为""以忽略 sudo。
    STATSD_PROXY_REPLICASstatsd代理的副本数
    STATSD_DAEMON_REPLICAS在代理后面运行的StatsD守护进程数。
    CARBON_RELAY_REPLICAS碳继电器副本数
    GRAPHITE_NODE_REPLICAS集群中的Graphite 数据节点数。 这里号码同时影响碳继电器和 Graphite 主配置。
    GRAPHITE_NODE_DISK_SIZE为每个 Graphite node 分配的持久磁盘的大小。
    GRAPHITE_NODE_CURATOR_RETENTION设置这里变量以运行 cronjob,该删除还没有写入的度量值。 把它留空不会运行 curator
    GRAPHITE_NODE_STORAGE_CLASS持久化volumen的存储类,它是 Graphite node 有状态集的声明
    GRAPHITE_MASTER_REPLICASGraphite 查询 node的副本数

    扩展部署:

    • 克隆这里存储库
    • 运行:
    
    export DOCKER_REPOSITORY=nanit && 
    
    
    export STATSD_PROXY_REPLICAS=3 && 
    
    
    export STATSD_DAEMON_REPLICAS=2 && 
    
    
    export CARBON_RELAY_REPLICAS=3 && 
    
    
    export GRAPHITE_NODE_REPLICAS=3 && 
    
    
    export GRAPHITE_NODE_DISK_SIZE=30G && 
    
    
    export GRAPHITE_NODE_CURATOR_RETENTION=5 && 
    
    
    export GRAPHITE_MASTER_REPLICAS=1 && 
    
    
    export GRAPHITE_NODE_STORAGE_CLASS=default && 
    
    
    export STATSD_PROXY_ADDITIONAL_YAML="" && 
    
    
    export STATSD_DAEMON_ADDITIONAL_YAML="" && 
    
    
    export CARBON_RELAY_ADDITIONAL_YAML="" && 
    
    
    export GRAPHITE_NODE_ADDITIONAL_YAML="" && 
    
    
    export SUDO="" && 
    
    
    make deploy
    
    
    
    

    用法:

    完成部署后,有两个感兴趣的端点:

    • statsd:8125 是你的度量集合的主机。 它指向statsd代理。
    • graphite:80 是指标查询的主机。 它指向查询集群中所有数据节点的Graphite 查询 node。

    运行 kubectl get pods,statefulsets,svc 并希望看到以下资源:

    K8s resources on a clean cluster

    每个资源的副本可能会根据你的环境变量 而改变。

    验证部署:

    要验证一切正常工作,请将以下内容粘贴到你的终端中:

    
    POD_NAME=$(kubectl get pods -l app=statsd -o jsonpath="{.items[0].metadata.name}")
    
    
    kubectl exec -it $POD_NAME bash 
    
    
    for i in {1..10}
    
    
    do
    
    
     echo"test_counter:1|c" | nc -w1 -u statsd 8125
    
    
     sleep 1
    
    
    done
    
    
    
    apk --update add curl
    
    
    curl 'graphite/render?target=stats.counters.test_counter.count&from=-10min&format=json'
    
    
    
    

    你应该会看到许多空值,并且在最后增加了一些值。

    构建你自己的图像

    如果要构建使用自己的映像,请确保将DOCKER_REPOSITORY环境变量更改为你自己的Docker 存储库。 它将构建映像,将它们推到 Docker 存储库,并使用它们创建所有需要的kubernetes部署。

    更改活动群集配置

    Graphite 节点和StatsD守护进程作为StatefulSets部署。 StatsD代理持续监视StatsD守护进程端点的Kubernetes API,并更新配置。 Graphite 和carbon都不断地监视 Graphite 节点端点的Kubernetes API,并更新配置。

    这意味着可以独立缩放各个部分,系统通过相应地更新它的配置文件来响应你的更改。

    确认

    • 我从中了解了很多关于 Graphite 集群的知识,这篇文章很好。
    • 节点的Docker 映像基于这个存储库的

    STA  STAT  集群  Graphite  stats  Statsd  
    相关文章