InfluxDB에 저장한 FlowService의 로그를 Grafana로 그래프로 해본다

지난번부터



InfluxDBPut 구성 요소를 만들고 InfluxDB에 FlowService 로그를 InfluxDB에 넣어 보았습니다.
데이터를 넣으면 시계열 데이터베이스이며 그래프로 하고 싶습니다.

Grafana



뭔가 저렴하게 그래프에 할 수있는 것으로 Grafana를 사용해 보겠습니다.
htps : // g 라후나. 코m/


계정을 만들고 로그인합니다.



Data Sources 에 InfluxDB 가 있으므로 추가합니다.



URL만으로 연결될 것 같습니다.
이번에는 AWS 인스턴스를 사용하고 있으므로 연결할 수 있습니다.



연결되었습니다.



데이터 문제



쿼리를 시도하고 깨달았지만 로그 데이터가 누락되었습니다.
FlowService의 로그에는 자주 있는 것입니다만, 같은 시간에 복수의 로그를 출력하고 있습니다.
이것은 문제입니다 ...
모든 로그를 넣고 싶기 때문에, 저장하는 데이터의 시간 단위를 NanoSeconds로 한 경우,
time에 MilliSeconds의 값을 지정하면 몰래 나노초를 추가하여 같은 시간이 되지 않도록 Put 컴포넌트를 수정했습니다.
if (FIELD_NAME_TIME.equals(name)) {
    if (timeUnit.equals(TimeUnit.NANOSECONDS)) {
        //nanoはFlowでは無理なので、ここで追加してやる
        //timeをDateTimeで指定した場合でもNANOSECONDSであれば、timeが重ならないようにすることができるようにする
        //Flowのログ対策
        time = fieldValue.longValue() * 1000000;
    } else {
        fieldTime = fieldValue.longValue();
    }

또, 태그를 지정했을 경우에 InfluxDB의 필드가 예기치 않은 일이 되기 때문에 태그는 지정하지 않게 했습니다.
증상: status 필드가 status 및 status_1 필드가 되어 검색할 수 없습니다.

시행착오의 결과, 이하와 같은 레코드 스트림을 사용하기로 했습니다.
<Record>
    <Field name="time" type="String">2019-03-26T09:03:28.012585455Z</Field>
    <Field name="code" type="String">AFRM_I_9017</Field>
    <Field name="data" type="String">プロセス監視スレッドを起動します</Field>
    <Field name="status" type="String">DEBUG</Field>
    <Field name="worker" type="String">[framework,main]</Field>
</Record>

사용하는 로그의 레코드는 7458 레코드로, 배치 건수 10000으로 설정한 Put 컴퍼넌트로 일발로 등록합니다.

그래프



10분 간격으로 3개의 막대 그래프를 나란히 보았습니다.

흐름 실행 시작 수 그래프
SELECT count("status") FROM "test"WHERE ("code"= 'FLEX_I_0001') AND $timeFilter GROUP BY time(10m)

오류 수 그래프
SELECT count("status") FROM "test"WHERE ("status"= 'ERROR') AND $timeFilter GROUP BY time(10m)

흐름 실행 종료 수 그래프
SELECT count("status") FROM "test"WHERE ("code"= 'FLEX_I_0002') AND $timeFilter GROUP BY time(10m)



요약



어떻게 든 FlowService 로그를 그래프로 만들 수있었습니다.
쿼리에서 차트를 나중에 자유롭게 만들 수 있어서 기쁩니다.
태그의 건은 알 수 없기 때문에, 조금 더 조사하고 싶습니다.

좋은 웹페이지 즐겨찾기