Category: InfluxDB

  • Telegraf install

    curl --silent --location -O https://repos.influxdata.com/influxdata-archive.key 
    echo "943666881a1b8d9b849b74caebf02d3465d6beb716510d86a39f6c8e8dac7515  influxdata-archive.key" | sha256sum -c - && cat influxdata-archive.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null 
    echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' | sudo tee /etc/apt/sources.list.d/influxdata.list
    sudo apt-get update && sudo apt-get install telegraf

  • influx CLI 작성중

    회사에서 사용하는 influxDB의 접속 ID/PW를 까먹었다. 그래서 ID와 PW를 확인 또는 PW 초기화를 해보고자 한다.

    홈페이지에서 내용을 조회하면 View Users 항목이 있다. influx CLI를 이용하면 할 수 있다고 한다.

    influx CLI는다음 과정을 거쳐서 설치할 수 있다.

    wget https://download.influxdata.com/influxdb/releases/influxdb2-client-2.7.5-linux-amd64.tar.gz
    
    tar xvzf path/to/influxdb2-client-2.7.5-linux-amd64.tar.gz
    
    sudo cp influxdb2-client-2.7.5-linux-amd64/influx /usr/local/bin/

    https://docs.influxdata.com/influxdb/v2/admin/users/recover-credentials

  • Telegraf

    InfluxDB와 같은 회사 제품으로 추정되는 Telegraf를 설치했다.

    sudo apt install telegraf

    InfluxDB에서 시스템 별로 구분하기 위하여 tag을 지정해 준다. [agent]에서 hostname부분을 설정해 주면 시스템 상의 hostname이 아닌 이 이름으로 저장이 돈다.

    [agent]
    hostname = "server"

    저장할 DB를 다음과 같이 설정해 준다.

    [[outputs.influxdb_v2]]
    urls = ["http://sweet.home:8086"]
    token = ""
    organization = ""
    bucket = ""

    난 단순한 네트웍 I/O를 확인하는 것이 필요했다. 그래서 다음을 추가해 주었다.

    [[inputs.net]]
    interfaces = ["eno*", "enp0s[0-1]", "lo"]
    ignore_protocol_stats = false
  • Python에서 InfluxDB 자료 불러오기

    Python 에서 InfluxDB의 자료를 불러와서 plot을 그려보기로 했다. 첫 번째 단계는 자료를 불러오는 것, 그리고 2번째 단계는 불러온 자료를 가공하는 것이다.

    PIP로 influxdb_client를 설치한다. 여러 종류가 있는 듯 한데, 불러오는 부분에 있어서 큰 차이는 없는 것 같다.

    import influxdb_client
    
    url = "http://www.welovedoctor.com:8086"
    token = "my_token"
    org = 'my_org'
    
    client = influxdb_client.InfluxDBClient(url=url, token=token, org=org)
    query_api = client.query_api()
    query = 'from(bucket:"measurement") |> range(start: -1h) |> filter(fn: (r) => r["_measurement"] == "location=home") |> filter(fn: (r) => r["_field"] == "temperature")'
    tables = query_api.query(org=org, query=query)

    query는 Flux 문법의 스크립트를 그대로 이용할 수 있다. 이렇게 하면 tables에 결과를 저장할 수 있다.

    그 다음은 json 으로 포맷을 변환하는 것이다. 구조가 복합하기 때문에 실제로 불러서 확인해 본 후 분석 방법을 결정해야 한다.

    from influxdb_client.client.flux_table import FluxStructureEncoder
    
    dt = json.loads(json.dumps(tables, cls=FluxStructureEncoder))