Telegraf를 통해 HAProxy의 통계 정보를 InflumxDB에 넣기

개시하다


최근의 로그와 자원 상황을 파악하기 위해 InflumxDB를 활용할 계획입니다. @takaidohigasi의 소개가 있기 때문에 InflumxDB사가 제공하는 도량 수집 도구인Telegraf를 사용했기 때문에 미리 적어두었습니다.
자세한 Telegraf에 대한 설명은 다음을 참조하십시오.
http://qiita.com/takaidohigasi/items/fdc81db8336aa7601fc9

Telegraf 소개


https://github.com/influxdb/telegraf
^에 기재된 것은 InflumxDB에 데이터를 등록하는 GO제 수집 도구입니다.
지원되는 메트릭은 다음과 같습니다.
  • disque
  • elasticsearch
  • exec (generic JSON-emitting executable plugin)
  • haproxy
  • httpjson (generic JSON-emitting http service plugin)
  • kafka_consumer
  • leofs
  • lustre2
  • memcached
  • mongodb
  • mysql
  • nginx
  • postgresql
  • prometheus
  • rabbitmq
  • redis
  • rethinkdb
  • system (mem, CPU, load, etc.)
  • InflexDB용 도구이지만 다음과 같은 출력 목적지를 지원합니다.
  • influxdb
  • kafka
  • datadog
  • 컨디션

  • OS: CentOS7.1
  • InfluxDB: 0.9.3
  • HAProxy: 1.5.4
  • Install


    RPM 패키지가 제공되므로 다음 명령으로 설치합니다.
    $ sudo yum -y install http://get.influxdb.org/telegraf/telegraf-0.1.7-1.x86_64.rpm
    $
    

    설정


    다음 명령으로 샘플의 설정 파일을 만듭니다.
    $ telegraf -sample-config > telegraf.toml
    

    HAProxy 플러그인 구성


    telegraf의 편리한 기능으로 다음 명령을 통해 각종 플러그인의 설정 방법을 확인할 수 있습니다.
    $ /opt/telegraf/telegraf -usage haproxy
    # Read metrics of haproxy, via socket or csv stats page
    [haproxy]
    # An array of address to gather stats about. Specify an ip on hostname
        # with optional port. ie localhost, 10.10.3.33:1936, etc.
        #
        # If no servers are specified, then default to 127.0.0.1:1936
        servers = ["http://myhaproxy.com:1936", "http://anotherhaproxy.com:1936"]
        # Or you can also use local socket(not work yet)
        # servers = ["socket:/run/haproxy/admin.sock"]$
    
    ^를 참고로 다음과 같은 설정 파일을 작성합니다.
    참고: 여기에 지정된 URI는 통계 페이지가 아닌 통계 정보의 CSV 파일입니다.
    telegraf.toml
    # Telegraf configuration
    # Telegraf is entirely plugin driven. All metrics are gathered from the
    # declared plugins.
    # Even if a plugin has no configuration, it must be declared in here
    # to be active. Declaring a plugin means just specifying the name
    # as a section with no variables. To deactivate a plugin, comment
    # out the name and any variables.
    # Use 'telegraf -config telegraf.toml -test' to see what metrics a config
    # file would generate.
    # One rule that plugins conform to is wherever a connection string
    # can be passed, the values '' and 'localhost' are treated specially.
    # They indicate to the plugin to use their own builtin configuration to
    # connect to the local system.
    # NOTE: The configuration has a few required parameters. They are marked
    # with 'required'. Be sure to edit those to make this configuration work.
    # Tags can also be specified via a normal map, but only one form at a time:
    [tags]
        # dc = "us-east-1"
    # Configuration for telegraf itself
    [agent]
        interval = "10s"
        # debug = false
        hostname = "telegraf01"
    # Read metrics of haproxy, via socket or csv stats page
    ###############################################################################
    # OUTPUTS #
    ###############################################################################
    [outputs]
    # Configuration for influxdb server to send metrics to
    [outputs.influxdb]
        # The full HTTP endpoint URL for your InfluxDB instance
        url = "http://localhost:8086" # required.
        # The target database for metrics. This database must already exist
        database = "telegraf" # required.
        # Connection timeout (for the connection with InfluxDB), formatted as a string.
        # Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h".
        # If not provided, will default to 0 (no timeout)
        # timeout = "5s"
        # username = "telegraf"
        # password = "metricsmetricsmetricsmetrics"
        # Set the user agent for the POSTs (can be useful for log differentiation)
        # user_agent = "telegraf"
    ###############################################################################
    # PLUGINS #
    ###############################################################################
    [haproxy]
    # An array of address to gather stats about. Specify an ip on hostname
        # with optional port. ie localhost, 10.10.3.33:1936, etc.
        #
        # If no servers are specified, then default to 127.0.0.1:1936
        servers = ["http://localhost:8080/haproxy/stats;csv"]
        # Or you can also use local socket(not work yet)
        # servers = ["socket:/run/haproxy/admin.sock"]
    

    HAProxy 설정/시작


    HAProxy 설정 파일에 다음 내용을 추가하고 시작합니다.
    /etc/haproxy/haproxy.cfg
    # admin #
    listen hastats
     bind *:8080
     mode http
     stats enable
     stats show-legends
     stats uri /haproxy/stats
    
    시작 후 브라우저*:8080/haproxy/stats에 액세스하면 다음 화면이 표시됩니다.

    화면 오른쪽 상단CSV export 링크를 클릭하면 CSV 파일이 표시되므로 이 링크를telegraf의 설정 파일로 지정합니다.

    시동 걸어봐.


    다음 명령으로foregroud를 시작합니다.
    $ /opt/telegraf/telegraf -config=telegraf.toml
    2015/09/01 12:03:47 Starting Telegraf (version 0.1.7)
    2015/09/01 12:03:47 Loaded outputs: influxdb
    2015/09/01 12:03:47 Loaded plugins: haproxy
    2015/09/01 12:03:47 Tags enabled: host=telegraf01
    
    한동안 inflexDB를 통해 확인한 결과telegraf라는 DB에는 다양한 measurements가 있음을 발견했다.

    Grafana에서 봐요.


    Datasource에telegraf라는 DB를 추가하여Dashboard에서 http의responsecode를 표시하면 다음과 같이 표시됩니다.

    Responsecode의 누적 값으로 표시됩니다.
    이것 괜찮아요?
    끝.

    좋은 웹페이지 즐겨찾기