మేము ELK మరియు Exchangeతో స్నేహితులం. పార్ట్ 1

మేము ELK మరియు Exchangeతో స్నేహితులం. పార్ట్ 1

నేను Exchange మరియు ELKని కనెక్ట్ చేయడంలో నా అనుభవాన్ని పంచుకోవాలనుకునే కథనాల శ్రేణిని ప్రారంభిస్తున్నాను. ఈ స్టాక్ మాకు పెద్ద వాల్యూమ్‌ల లాగ్‌లను ప్రాసెస్ చేయడంలో సహాయపడుతుంది మరియు సాధారణ లాగింగ్ సాధనాలు ఏ పరిమాణంలో మాకు సహాయం చేయడానికి నిరాకరిస్తాయో ఆలోచించాల్సిన అవసరం లేదు. కొత్త లాగ్ ఫైటర్‌తో పరిచయం చేసుకుందాం.

Exchange చాలా విస్తృతమైన లాగింగ్ వ్యవస్థను కలిగి ఉంది. అత్యంత ప్రజాదరణ పొందిన లాగ్‌లు ట్రాకింగ్ లాగ్‌లు, ఇవి పోస్టల్ సంస్థలోని నిర్దిష్ట లేఖ యొక్క దశల వారీ భాగాన్ని ట్రాక్ చేస్తాయి; సిస్టమ్‌లోని ప్రతి కొత్త వినియోగదారు సెషన్‌ను ట్రాక్ చేసే వెబ్ సర్వర్ లాగ్‌లు మరియు వివిధ స్థాయిల సెషన్ వివరాలతో నిర్దిష్ట వెబ్ అప్లికేషన్‌ల లాగ్‌లు. Exchange smtp, imap మరియు pop3 ప్రోటోకాల్‌ల ముడి లాగ్‌లను కూడా నిల్వ చేయగలదు.

లాగ్‌లతో పని చేయడానికి మనం ఏ సాధనాలను ఉపయోగించవచ్చు:

  • ప్రామాణిక cmdlet Get-MessageTrackingLog: సౌకర్యవంతంగా ట్రాకింగ్ లాగ్‌లను ప్రాసెస్ చేయండి;
  • లాగ్‌పార్సర్ యుటిలిటీ: లాగింగ్ కోసం, ఒక సూడో-SQL శోధన భాషను ఉపయోగిస్తుంది మరియు చాలా త్వరగా పని చేస్తుంది;
  • బాహ్య SQL సర్వర్: చాలా నిర్దిష్ట కేసుల కోసం (ఉదాహరణకు, చాలా కాలం పాటు డేటాను విశ్లేషించడం).

మేము రెండు సర్వర్‌లను కలిగి ఉన్నప్పుడు మరియు ప్రాసెస్ చేయబడిన లాగ్‌ల వాల్యూమ్ పదుల లేదా వందల గిగాబైట్‌లలో కొలవబడినప్పుడు ఇవన్నీ బాగా పని చేస్తాయి. సర్వర్‌ల సంఖ్య డజన్ల కొద్దీ ఉంటే మరియు లాగ్‌ల పరిమాణం టెరాబైట్‌ను మించి ఉంటే? ఈ పథకం చాలా మటుకు కూలిపోతుంది.

మరియు ఇది జరుగుతుంది: Get-MessageTrackingLog సమయం ముగిసింది, లాగ్‌పార్సర్ 32-బిట్ ఆర్కిటెక్చర్ యొక్క సీలింగ్‌ను తాకుతుంది మరియు SQL సర్వర్‌కు అప్‌లోడ్ చేయడం అనేది సేవ నుండి బహుళ-లైన్ మినహాయింపును జీర్ణించుకోకుండా చాలా అనుచితమైన సమయంలో విచ్ఛిన్నమవుతుంది.

ఇక్కడ ఒక కొత్త ఆటగాడు సన్నివేశంలోకి ప్రవేశిస్తాడు - ELK స్టాక్, ఇది సహేతుకమైన సమయంలో మరియు సహించదగిన వనరుల వినియోగంతో భారీ వాల్యూమ్‌ల లాగ్‌లను గారడీ చేయడం కోసం ప్రత్యేకంగా రూపొందించబడింది.

మొదటి భాగంలో నేను మీకు వివరంగా చెబుతాను, ELK స్టాక్‌లో భాగానికి చెందిన ఫైల్‌బీట్‌ను ఎలా కనెక్ట్ చేయాలి — వివిధ అప్లికేషన్‌లు వాటి లాగ్‌లను వ్రాసే సాధారణ టెక్స్ట్ ఫైల్‌లను చదవడం మరియు పంపడం బాధ్యత. కింది కథనాలలో మేము లాగ్‌స్టాష్ మరియు కిబానా భాగాలను నిశితంగా పరిశీలిస్తాము.

సెట్టింగ్

కాబట్టి, ఫైల్‌బీట్ ఏజెంట్ ఆర్కైవ్ ఫైల్ ఈ సైట్ నుండి డౌన్‌లోడ్ చేసుకోవచ్చు.

మేము జిప్ ఫైల్ యొక్క కంటెంట్‌లను సంగ్రహించడం ద్వారా ఇన్‌స్టాలేషన్‌ను పూర్తి చేస్తాము. ఉదాహరణకు, లో c:Program Filesfilebeat. అప్పుడు మీరు పవర్‌షెల్ స్క్రిప్ట్‌ను అమలు చేయాలి install-service-filebeat.ps1, ఇది ఫైల్‌బీట్ సేవను ఇన్‌స్టాల్ చేయడానికి కిట్‌తో వస్తుంది.

ఇప్పుడు మేము కాన్ఫిగరేషన్ ఫైల్‌ను సెటప్ చేయడానికి సిద్ధంగా ఉన్నాము.

తప్పు సహనం

ఫైల్‌బీట్ లాగ్ సేకరణ వ్యవస్థకు లాగ్‌ల పంపిణీకి హామీ ఇస్తుంది. లాగ్ ఫైల్‌లలో ఎంట్రీల రిజిస్టర్‌ను నిర్వహించడం ద్వారా ఇది సాధించబడుతుంది. రిజిస్ట్రీ లాగ్ ఫైల్‌ల నుండి చదివిన ఆ రికార్డుల గురించి సమాచారాన్ని నిల్వ చేస్తుంది మరియు గమ్యస్థానానికి బట్వాడా చేయగలిగిన నిర్దిష్ట రికార్డులను సూచిస్తుంది.

రికార్డ్‌ను బట్వాడా చేయలేకపోతే, ఫైల్‌బీట్ స్వీకరించే సిస్టమ్ నుండి డెలివరీ నిర్ధారణను స్వీకరించే వరకు దాన్ని మళ్లీ పంపడానికి ప్రయత్నిస్తుంది లేదా భ్రమణ ప్రక్రియలో అసలు లాగ్ ఫైల్ తొలగించబడుతుంది.

సేవ పునఃప్రారంభించబడినప్పుడు, ఫైల్‌బీట్ రిజిస్ట్రీ నుండి చివరిగా చదివిన మరియు పంపిణీ చేయబడిన రికార్డుల గురించి సమాచారాన్ని చదువుతుంది మరియు రిజిస్ట్రీలోని సమాచారం ఆధారంగా లాగ్ ఫైల్‌లలోని రికార్డులను చదువుతుంది.

ఊహించని వైఫల్యాలు మరియు సర్వర్ నిర్వహణ కార్యకలాపాల సమయంలో సాగే లాగ్‌స్టాష్ సర్వర్‌లకు పంపాల్సిన లాగ్ సమాచారాన్ని కోల్పోయే ప్రమాదాన్ని తగ్గించడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది.

మీరు దీని గురించి మరింత తెలుసుకోవచ్చు పేరాల్లో డాక్యుమెంటేషన్ చదవండి: ఫైల్‌బీట్ ఫైల్‌ల స్థితిని ఎలా ఉంచుతుంది మరియు ఫైల్‌బీట్ కనీసం ఒక్కసారి డెలివరీని ఎలా నిర్ధారిస్తుంది?

సర్దుబాటు

అన్ని కాన్ఫిగరేషన్ ఫార్మాట్ కాన్ఫిగరేషన్ ఫైల్‌లో జరుగుతుంది yml, ఇది అనేక విభాగాలుగా విభజించబడింది. ఎక్స్ఛేంజ్ సర్వర్‌ల నుండి లాగ్‌లను సేకరించే ప్రక్రియలో పాల్గొన్న వాటిలో కొన్నింటిని చూద్దాం.

లాగ్ ప్రాసెసింగ్ బ్లాక్

లాగ్ ప్రాసెసింగ్ బ్లాక్ ఫీల్డ్‌తో ప్రారంభమవుతుంది:

filebeat.inputs:

మేము సాధారణ లాగ్ సేకరణ సాధనాన్ని ఉపయోగిస్తాము:

- type: log

తరువాత, స్థితి (ప్రారంభించబడింది) మరియు లాగ్‌లతో ఫోల్డర్‌కు మార్గాన్ని సూచించండి. ఉదాహరణకు, IIS లాగ్‌ల విషయంలో, సెట్టింగ్‌లు క్రింది విధంగా ఉండవచ్చు:

    enabled: true
    paths:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log

ఫైల్‌బీట్ మల్టీ-లైన్ రికార్డ్‌లను ఎలా చదవాలి అనేది మరొక ముఖ్యమైన సెట్టింగ్. డిఫాల్ట్‌గా, ఫైల్‌బీట్ లాగ్ ఫైల్‌లోని ఒక లైన్‌ను ఒక ఎంట్రీగా పరిగణిస్తుంది. సేవ యొక్క తప్పు ఆపరేషన్‌కు సంబంధించి మా లాగ్‌లో మినహాయింపులను స్వీకరించడం ప్రారంభించే వరకు ఇది బాగా పని చేస్తుంది. ఈ సందర్భంలో, మినహాయింపులు అనేక పంక్తులను కలిగి ఉండవచ్చు. కాబట్టి ఫైల్‌బీట్ తప్పనిసరిగా ఒక బహుళ-లైన్ ఎంట్రీని ఒక తేదీతో తదుపరి పంక్తి ప్రారంభమైతే ఒకటిగా లెక్కించాలి. Exchangeలో లాగ్‌లను రికార్డ్ చేయడానికి ఫార్మాట్ క్రింది విధంగా ఉంటుంది: లాగ్ ఫైల్‌లోని ప్రతి కొత్త నమోదు తేదీతో ప్రారంభమవుతుంది. కాన్ఫిగరేషన్‌లో, ఈ పరిస్థితి ఇలా కనిపిస్తుంది:

multiline:
	pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	negate: true
	match: after

మీరు పంపుతున్న పోస్ట్‌కి ట్యాగ్‌లను జోడించడం సమంజసం, ఉదాహరణకు:

  tags: ['IIS', 'ex-srv1']

మరియు హాష్ అక్షరంతో ప్రారంభమయ్యే ప్రాసెసింగ్ లైన్‌ల నుండి మినహాయించడం మర్చిపోవద్దు:

  exclude_lines: ['^#']

కాబట్టి, లాగ్ రీడింగ్ బ్లాక్ ఇలా కనిపిస్తుంది:

filebeat.inputs:
- type: log
  enabled: true
  paths:
	- C:inetpublogsLogFilesW3SVC1*.log
	- C:inetpublogsLogFilesW3SVC2*.log
  multiline:
	pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
	negate: true
	match: after
  tags: ['IIS', 'ex-srv1']
  exclude_lines: ['^#']

లాగ్ పంపే బ్లాక్

Filebeat లాగ్ ఫైల్‌లోని వ్యక్తిగత ఎంట్రీలను json ఆబ్జెక్ట్‌గా పంపుతుంది, దీనిలో లాగ్ నుండి నిర్దిష్ట ఎంట్రీ ఒకే సందేశ ఫీల్డ్‌లో ఉంటుంది. మేము ఈ సమాచారంతో ఏదో ఒకవిధంగా పని చేయాలనుకుంటే, ముందుగా ఈ ఫీల్డ్‌ను ప్రత్యేక ఫీల్డ్‌లుగా అన్వయించాలి. ఉదాహరణకు, లాగ్‌స్టాష్‌లో దీన్ని చేయవచ్చు. అతను ఫైల్‌బీట్ నుండి రికార్డుల గ్రహీత అవుతాడు. ఫైల్‌బీట్ కాన్ఫిగరేషన్ ఫైల్‌లో ఇది ఎలా ఉంటుందో ఇక్కడ ఉంది:

output.logstash:
  hosts: ["logstash1.domain.com:5044"]

అనేక సర్వర్లు ఉంటే, మీరు వాటి కోసం బ్యాలెన్సింగ్‌ను ప్రారంభించవచ్చు: అప్పుడు ఫైల్‌బీట్ జాబితా నుండి అందుబాటులో ఉన్న మొదటి సర్వర్‌కు లాగ్‌లను పంపదు, కానీ పంపిన లాగ్‌లను అనేక సర్వర్‌లలో పంపిణీ చేస్తుంది:

hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true 

ఫైల్‌బీట్, పంపిన jsonలో లాగ్‌లను ప్రాసెస్ చేస్తున్నప్పుడు, సందేశ ఫీల్డ్‌లో ఉన్న లాగ్ ఎంట్రీతో పాటు, కొంత మొత్తంలో మెటాడేటాను జోడిస్తుంది, ఇది సాగే పత్రం యొక్క పరిమాణాన్ని ప్రభావితం చేస్తుంది. ఈ మెటాడేటాను సమర్పణ నుండి ఎంపిక చేసి తీసివేయవచ్చు. ప్రాసెసర్‌ని ఉపయోగించి ప్రాసెసర్ బ్లాక్‌లో ఇది జరుగుతుంది drop_fields. ఉదాహరణకు, మీరు ఈ క్రింది ఫీల్డ్‌లను మినహాయించవచ్చు:

processors:
- drop_fields:
	fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]

మీరు మినహాయించిన ఫీల్డ్‌ల ఎంపికను జాగ్రత్తగా సంప్రదించాలి, ఎందుకంటే వాటిలో కొన్ని సూచికలను రూపొందించడానికి సాగే వైపు ఉపయోగించవచ్చు.

కాబట్టి, లాగ్ పంపే బ్లాక్ ఇలా కనిపిస్తుంది:

output.logstash:
  hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true
 
processors:
- drop_fields:
	fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]

filebeat లాగింగ్ సెట్టింగ్‌లు

కింది లాగింగ్ సెట్టింగ్‌లను సెట్ చేయడం అర్ధమే:

  • లాగింగ్ స్థాయి సమాచారం;
  • మేము డిఫాల్ట్‌గా ఉన్న ఫైల్‌లకు లాగ్‌లను వ్రాస్తాము (లాగ్స్ డైరెక్టరీ, ఫైల్‌బీట్ ఇన్‌స్టాలేషన్ డైరెక్టరీలో);
  • లాగ్ ఫైల్ పేరు - ఫైల్‌బీట్;
  • చివరి 10 లాగ్ ఫైల్‌లను నిల్వ చేయండి;
  • పరిమాణం 1MBకి చేరుకున్నప్పుడు భ్రమణాన్ని ప్రారంభించండి.

చివరి లాగింగ్ కాన్ఫిగరేషన్ బ్లాక్ ఇలా కనిపిస్తుంది:

logging.level: info
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 10
  rotateeverybytes: 1048576

చివరి కాన్ఫిగరేషన్

మేము కాన్ఫిగరేషన్‌ను సమీకరించాము మరియు ఇప్పుడు ఇది ఇలా కనిపిస్తుంది:

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - C:inetpublogsLogFilesW3SVC1*.log
    - C:inetpublogsLogFilesW3SVC2*.log
  multiline:
    pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
    negate: true
    match: after
  tags: ['IIS', 'ex-srv1']
  exclude_lines: ['^#']
 
output.logstash:
  hosts: ["logstash1.domain.com:5044", "logstash2.domain.com:5044"]
  loadbalance: true
 
processors:
- drop_fields:
    fields: ["agent.ephemeral_id", "agent.hostname", "agent.id", "agent.type", "agent.version", "agent", "ecs.version", "ecs", "input.type", "input", "log.offset", "version"]
 
logging.level: info
logging.to_files: true
logging.files:
  name: filebeat
  keepfiles: 10
  rotateeverybytes: 1048576

కాన్ఫిగరేషన్ ఫైల్ ఫార్మాట్ yml అని అర్థం చేసుకోవడం ముఖ్యం. అందువల్ల, ఖాళీలు మరియు మైనస్ సంకేతాలను సరిగ్గా ఉంచడం చాలా ముఖ్యం.

Filebeat కాన్ఫిగరేషన్ ఫైల్‌ని తనిఖీ చేయగలదు మరియు సింటాక్స్‌లో లోపాలు ఉంటే, అది ఏ లైన్‌లో మరియు ఎక్కడ వాక్యనిర్మాణం తప్పుగా ఉందో సూచిస్తుంది. చెక్ ఈ క్రింది విధంగా నిర్వహించబడుతుంది:

.filebeat.exe test config

ఫైల్‌బీట్ లాగ్ రిసీవర్ యొక్క నెట్‌వర్క్ లభ్యతను కూడా తనిఖీ చేయగలదు. చెక్ ఇలా నడుస్తుంది:

.filebeat.exe test output

కింది భాగాలలో నేను లాగ్‌స్టాష్ మరియు కిబానా భాగాలతో ఎక్స్ఛేంజ్ యొక్క కనెక్షన్ మరియు స్నేహం గురించి మాట్లాడతాను.

ఉపయోగకరమైన లింకులు

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి