Салам, менин атым Евгений, мен Citymobilда B2B командасынын лидеримин. Биздин команданын милдеттеринин бири - өнөктөштөрдөн таксиге заказ берүү үчүн интеграцияларды колдоо жана туруктуу тейлөөнү камсыз кылуу үчүн биз ар дайым биздин микросервистерде эмне болуп жатканын түшүнүшүбүз керек. Ал эми бул үчүн дайыма журналдарды көзөмөлдөө керек.
Citymobilде биз журналдар менен иштөө үчүн ELK стекин (ElasticSearch, Logstash, Kibana) колдонобуз жана ал жакка келген маалыматтардын көлөмү чоң. Жаңы кодду жайылткандан кийин пайда болушу мүмкүн болгон суроо-талаптардын бул массасынан көйгөйлөрдү табуу абдан кыйын. Алардын визуалдык идентификациясы үчүн Кибанада Dashboard бөлүмү бар.
Маалыматтарды кабыл алуу жана сактоо үчүн ELK стекин кантип орнотуу керектиги жөнүндө мисалдар менен Habré боюнча бир нече макалалар бар, бирок башкаруу тактасын түзүү боюнча тиешелүү материалдар жок. Ошондуктан, мен Кибанадагы кирген журналдардын негизинде маалыматтардын визуалдык өкүлчүлүгүн кантип түзүүнү көрсөткүм келет.
тууралоо
Аны айкыныраак кылуу үчүн мен ELK жана Filebeat менен Docker сүрөтүн түздүм. Ал эми кичинекей идишке салып койду
Конфигурация репозиторийин клондоштуруу docker-compose
жана ELK орнотуулары, жана буйрук менен ишке киргизүү docker-compose up
. Ачкычты атайылап кошпойт -d
ELK стекинин жүрүшүн көрүү үчүн.
git clone https://github.com/et-soft/habr-elk
cd habr-elk
docker-compose up
Эгер баары туура конфигурацияланган болсо, анда биз журналдарда жазууну көрөбүз (балким дароо эмес, бүт стек менен контейнерди ишке киргизүү процесси бир нече мүнөткө созулушу мүмкүн):
{"type":"log","@timestamp":"2020-09-20T05:55:14Z","tags":["info","http","server","Kibana"],"pid":6,"message":"http server running at http://0:5601"}
Адрес боюнча localhost:5061
Кибана ачуу керек.
Биз конфигурациялашыбыз керек болгон бир гана нерсе - Кибана үчүн Индекс үлгүсүн түзүү, кандай маалыматтарды көрсөтүү керектиги жөнүндө маалымат. Бул үчүн, биз curl өтүнүчүн аткарабыз же графикалык интерфейсте бир катар аракеттерди аткарабыз.
$ curl -XPOST -D- 'http://localhost:5601/api/saved_objects/index-pattern'
-H 'Content-Type: application/json'
-H 'kbn-xsrf: true'
-d '{"attributes":{"title":"logstash-*","timeFieldName":"@timestamp"}}'
GUI аркылуу индекс үлгүсүн түзүү
Конфигурациялоо үчүн сол менюдан Discover бөлүмүн тандап, Индекс үлгүсүн түзүү барагына өтүңүз.
"Индекс үлгүсүн түзүү" баскычын басуу менен биз индексти түзүү барагына келебиз. "Индекс үлгү аты" талаасына "logstash-*" киргизиңиз. Эгер баары туура конфигурацияланса, төмөндө Кибана эрежеге туура келген индекстерди көрсөтөт.
Кийинки бетте убакыт белгиси бар негизги талааны тандаңыз, биздин учурда бул @timestamp
.
Ушуну менен индекстин жөндөөлөр барагы ачылат, бирок бизден мындан ары эч кандай аракет талап кылынбайт.
Эми биз кайрадан Discover бөлүмүнө бара алабыз, анда биз журнал жазууларын көрөбүз.
бөлмө
Сол менюда, панелди түзүү бөлүмүн чыкылдатып, тиешелүү бетке өтүңүз.
"Жаңы панелди түзүү" баскычын чыкылдатып, Куралдар тактасына объекттерди кошуу барагына өтүңүз.
"Жаңы түзүү" баскычын чыкылдатыңыз, ошондо система маалымат дисплей түрүн тандоону сунуштайт. Кибанада алардын саны көп, бирок биз "Вертикал тилкенин" графикалык көрүнүшүн жана таблицадагы "Маалымат таблицасын" түзүүнү карайбыз. Презентациянын башка түрлөрү да ушундай жол менен конфигурацияланган.
Айрым жеткиликтүү объекттер B жана E деп белгиленет, бул формат эксперименталдык же бета тестирлөөдө экенин билдирет. Убакыттын өтүшү менен формат Кибанадан өзгөрүшү же толугу менен жок болушу мүмкүн.
Вертикал тилке
"Вертикал тилке" мисалы үчүн, биздин кызматтын ийгиликтүү жана ийгиликсиз жооп статустарынын катышынын гистограммасын түзөлү. Орнотуулардын аягында биз төмөнкү графикти алабыз:
Жооп статусу < 400 болгон бардык сурамдарды ийгиликтүү жана >= 400 көйгөйлүү катары классификациялайбыз.
"Вертикал тилке" диаграммасын түзүү үчүн биз маалымат булагын тандообуз керек. Биз мурда түзгөн Индекс үлгүсүн тандаңыз.
Демейки боюнча, маалымат булагын тандагандан кийин бир катуу график пайда болот. Келиңиз, аны орнотобуз.
"Челектер" блогунда "Кошуу" баскычын басыңыз, "X-asis" тандап, X огунун орнотуңуз. Журналга жазууларды кабыл алуу үчүн убакыт белгилерин бөлүп алалы. "Агрегация" талаасында "Дата гистограммасын" тандаңыз, ал эми "Талаада" убакыт талаасын көрсөтүү менен "@timestamp" тандаңыз. Келгиле, "Минималдуу интервалды" "Авто" абалында калтыралы, ал биздин дисплейге автоматтык түрдө ылайыкталат.
"Жаңыртуу" баскычын чыкылдатуу менен, биз ар бир 30 секунд сайын сурамдардын саны менен графикти көрөбүз.
Эми Y огу боюнча мамычаларды орнотолу.Эми биз тандалган убакыт аралыгында сурамдардын жалпы санын көрсөтүп жатабыз.
Ийгиликтүү жана ийгиликсиз суроо-талаптар үчүн маалыматтарды бириктирүүгө мүмкүндүк берүүчү "Агрегация" маанисин "Колумдук чака" деп өзгөртөлү. Чака -> Агрегация блогунда "Чыпкалар" боюнча топтоону тандаңыз жана "statusCode >= 400" боюнча чыпкалоону орнотуңуз. Ал эми "Ыңгайлаштырылган энбелги" талаасында диаграммадагы жана жалпы тизмедеги легендада түшүнүктүүраак көрсөтүү үчүн индикатордун аталышын көрсөтөбүз.
Орнотуулар блогунун астындагы "Жаңыртуу" баскычын чыкылдатуу менен, биз көйгөй сурамдары менен графикти алабыз.
Эгерде сиз легенданын жанындагы тегеректи бассаңыз, тилкелердин түсүн өзгөртө турган терезе пайда болот.
Эми диаграммага ийгиликтүү сурамдар боюнча маалыматтарды кошолу. "Метрика" бөлүмүндө "Кошуу" баскычын чыкылдатып, "Y огу" тандаңыз.
Түзүлгөн метрикада биз туура эмес суроо-талаптардагыдай эле орнотууларды жасайбыз. Чыпкада гана биз "statusCode < 400" көрсөтөбүз.
Жаңы тилкенин түсүн өзгөртүү менен биз көйгөйлүү жана ийгиликтүү сурамдардын катышын көрсөтөбүз.
Экрандын жогору жагындагы "Сактоо" баскычын чыкылдатып, атын көрсөтүү менен, биз панелдин биринчи диаграммасын көрөбүз.
Маалыматтар таблицасы
Эми "Маалымат таблицасы" таблицалык көрүнүшүн карап көрөлү. Келгиле, бардык суралган URL'дердин тизмеси жана алардын саны менен таблица түзөлү. Vertical Bar мисалындай эле, биз адегенде маалымат булагын тандайбыз.
Андан кийин экранда бир тилкеси бар таблица пайда болот, анда тандалган убакыт аралыгы үчүн сурамдардын жалпы саны көрсөтүлөт.
Биз "Челектер" блогун гана өзгөртөбүз. "Кошуу" баскычын чыкылдатып, "Сатарларды бөлүүнү" тандаңыз.
"Агрегация" талаасында "Шарттарды" тандаңыз. Ал эми пайда болгон талаада "Талаа" тандоо "url.keyword".
"Ыңгайлаштырылган энбелги" талаасында "Url" маанисин көрсөтүү менен жана "Жаңыртуу" баскычын чыкылдатуу менен, биз тандалган убакыт аралыгында URL'дердин ар бири үчүн суроо-талаптардын саны менен каалаган таблицаны алабыз.
Экрандын жогору жагындагы "Сактоо" баскычын дагы бир жолу чыкылдатып, таблицанын атын көрсөтүңүз, мисалы Urls. Келгиле, аспаптар тактасына кайрылып, түзүлгөн эки көрүнүштү көрөлү.
Dashboard менен иштөө
Куралдар тактасын түзүүдө биз дисплей объектинин жөндөөлөрүндө негизги көрүнүш параметрлерин гана орнотобуз. Объекттердеги чыпкалар үчүн маалыматтарды көрсөтүүнүн мааниси жок, мисалы, "күн диапазону", "колдонуучу агент боюнча чыпкалоо", "суроо-өлкө боюнча чыпкалоо" ж.б. Объекттердин үстүндө жайгашкан суроо панелинде керектүү убакыт аралыгын көрсөтүү же керектүү чыпкалоону коюу алда канча ыңгайлуу.
Бул панелге кошулган чыпкалар толугу менен Башкаруу тактасына колдонулат жана бардык дисплей объекттери чыныгы чыпкаланган маалыматтарга ылайык кайра курулат.
жыйынтыктоо
Kibana - бул кандайдыр бир маалыматты ыңгайлуу жол менен визуалдаштырууга мүмкүндүк берген күчтүү курал. Мен дисплейдин эки негизги түрүн орнотууну көрсөтүүгө аракет кылдым. Бирок башка түрлөрү окшош жол менен конфигурацияланган. Жана мен "көшөгө артында" калтырган орнотуулардын көптүгү сизге диаграммаларды өзүңүздүн муктаждыктарыңызга ылайыкташтырууга абдан ийкемдүү мүмкүнчүлүк берет.
Source: www.habr.com