Verwenden vordefinierter Abfragen in Amazon Athena - AWS Application Discovery Service

AWS Der Application Discovery Service steht Neukunden nicht mehr zur Verfügung. Verwenden Sie alternativ eines AWS Transform , das ähnliche Funktionen bietet. Weitere Informationen finden Sie unter Änderung der Verfügbarkeit von AWS Application Discovery Service.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden vordefinierter Abfragen in Amazon Athena

Dieser Abschnitt enthält eine Reihe von vordefinierten Abfragen, die typische Anwendungsfälle wie die Analyse der Gesamtbetriebskosten und die Netzwerk-Visualisierung ausführen. Sie können diese Abfragen unverändert verwenden oder sie Ihren Anforderungen entsprechend anpassen.

So verwenden Sie eine vordefinierte Abfrage
  1. Wählen Sie in der AWS Migration Hub Konsole im Navigationsbereich Server aus.

  2. Um die Amazon Athena-Konsole zu öffnen, wählen Sie Explore data in Amazon Athena.

  3. Prüfen Sie auf der Seite Query Editor (Abfrage-Editor) im Navigationsbereich unter Database (Datenbank), ob application_discovery_service_database ausgewählt ist.

  4. Wählen Sie das Pluszeichen (+) im Abfrage-Editor aus, um eine Registerkarte für eine neue Abfrage zu erstellen.

  5. Kopieren Sie eine der Abfragen aus Vordefinierte Abfragen.

  6. Fügen Sie die Abfrage in den Abfragebereich der neuen Abfrage-Registerkarte ein, die Sie gerade erstellt haben.

  7. Klicken Sie auf Run Query (Abfrage ausführen).

Vordefinierte Abfragen

Wählen Sie einen Titel aus, um Informationen über die Abfrage anzuzeigen.

Diese Ansichts-Hilfsfunktion ruft die IP-Adressen und Hostnamen für einen bestimmten Server ab. Sie können diese Ansicht bei anderen Abfragen verwenden. Informationen zum Erstellen einer Ansicht finden Sie unter CREATE VIEW im Amazon Athena Athena-Benutzerhandbuch.

CREATE OR REPLACE VIEW hostname_ip_helper AS SELECT DISTINCT "os"."host_name" , "nic"."agent_id" , "nic"."ip_address" FROM os_info_agent os , network_interface_agent nic WHERE ("os"."agent_id" = "nic"."agent_id");

Diese Abfrage kann bei der Datenvalidierung helfen. Wenn Sie auf einer Reihe von Servern in Ihrem Netzwerk Agenten bereitgestellt haben, können Sie diese Abfrage verwenden, um zu erfahren, ob es weitere Server in Ihrem Netzwerk ohne Agenten gibt. In dieser Abfrage wird der ein- und ausgehende Netzwerkdatenverkehr untersucht und der Datenverkehr ausschließlich nach privaten IP-Adressen gefiltert. Dies sind IP-Adressen, die mit 192, 10 oder 172 beginnen.

SELECT DISTINCT "destination_ip" "IP Address" , (CASE WHEN ( (SELECT "count"(*) FROM network_interface_agent WHERE ("ip_address" = "destination_ip") ) = 0) THEN 'no' WHEN ( (SELECT "count"(*) FROM network_interface_agent WHERE ("ip_address" = "destination_ip") ) > 0) THEN 'yes' END) "agent_running" FROM outbound_connection_agent WHERE ((("destination_ip" LIKE '192.%') OR ("destination_ip" LIKE '10.%')) OR ("destination_ip" LIKE '172.%')) UNION SELECT DISTINCT "source_ip" "IP ADDRESS" , (CASE WHEN ( (SELECT "count"(*) FROM network_interface_agent WHERE ("ip_address" = "source_ip") ) = 0) THEN 'no' WHEN ( (SELECT "count"(*) FROM network_interface_agent WHERE ("ip_address" = "source_ip") ) > 0) THEN 'yes' END) "agent_running" FROM inbound_connection_agent WHERE ((("source_ip" LIKE '192.%') OR ("source_ip" LIKE '10.%')) OR ("source_ip" LIKE '172.%'));

Mit dieser Abfrage können Sie die Systemleistung und Nutzungsmusterdaten für Ihre lokalen Server mit installierten Agenten analysieren. Die Abfrage kombiniert die Tabellen system_performance_agent und os_info_agent, um den Hostnamen für die einzelnen Server zu identifizieren. Diese Abfrage gibt die Zeitreihen-Nutzungsdaten (in 15-Minuten-Intervallen) für alle Server zurück, auf denen Agenten ausgeführt werden.

SELECT "OS"."os_name" "OS Name" , "OS"."os_version" "OS Version" , "OS"."host_name" "Host Name" , "SP"."agent_id" , "SP"."total_num_cores" "Number of Cores" , "SP"."total_num_cpus" "Number of CPU" , "SP"."total_cpu_usage_pct" "CPU Percentage" , "SP"."total_disk_size_in_gb" "Total Storage (GB)" , "SP"."total_disk_free_size_in_gb" "Free Storage (GB)" , ("SP"."total_disk_size_in_gb" - "SP"."total_disk_free_size_in_gb") "Used Storage" , "SP"."total_ram_in_mb" "Total RAM (MB)" , ("SP"."total_ram_in_mb" - "SP"."free_ram_in_mb") "Used RAM (MB)" , "SP"."free_ram_in_mb" "Free RAM (MB)" , "SP"."total_disk_read_ops_per_sec" "Disk Read IOPS" , "SP"."total_disk_bytes_written_per_sec_in_kbps" "Disk Write IOPS" , "SP"."total_network_bytes_read_per_sec_in_kbps" "Network Reads (kbps)" , "SP"."total_network_bytes_written_per_sec_in_kbps" "Network Write (kbps)" FROM "sys_performance_agent" "SP" , "OS_INFO_agent" "OS" WHERE ("SP"."agent_id" = "OS"."agent_id") limit 10;

Über diese Abfrage werden die Details zum ausgehenden Datenverkehr für jeden Dienst abgerufen, zusammen mit der Portnummer und den Prozessdetails.

Bevor Sie die Abfrage ausführen, müssen Sie, falls noch nicht geschehen, die iana_service_ports_import-Tabelle erstellen, die die von der IANA heruntergeladene Datenbank des IANA-Portregisters enthält. Weitere Informationen zum Erstellen dieser Tabelle finden Sie unter Die Importtabelle für die IANA-Portregistrierung wird erstellt.

Nach der Erstellung der Tabelle iana_service_ports_import erstellen Sie zwei Ansichtshilfsfunktionen zur Verfolgung des ausgehenden Datenverkehrs. Informationen zum Erstellen einer Ansicht finden Sie unter CREATE VIEW im Amazon Athena Athena-Benutzerhandbuch.

So erstellen Sie Hilfsfunktionen für die Nachverfolgung des ausgehenden Datenverkehrs
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Erstellen Sie die valid_outbound_ips_helper Ansicht mithilfe der folgenden Hilfsfunktion, die alle unterschiedlichen ausgehenden Ziel-IP-Adressen auflistet.

    CREATE OR REPLACE VIEW valid_outbound_ips_helper AS SELECT DISTINCT "destination_ip" FROM outbound_connection_agent;
  3. Erstellen Sie die Ansicht outbound_query_helper über die folgende Hilfsfunktion, die die Häufigkeit der Kommunikation für den ausgehenden Datenverkehr ermittelt.

    CREATE OR REPLACE VIEW outbound_query_helper AS SELECT "agent_id" , "source_ip" , "destination_ip" , "destination_port" , "agent_assigned_process_id" , "count"(*) "frequency" FROM outbound_connection_agent WHERE (("ip_version" = 'IPv4') AND ("destination_ip" IN (SELECT * FROM valid_outbound_ips_helper ))) GROUP BY "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
  4. Nachdem Sie die iana_service_ports_import-Tabelle und Ihre zwei Hilfsfunktionen erstellt haben, können Sie die folgende Abfrage ausführen, um die Details zum ausgehenden Datenverkehr für die jeweiligen Dienste in Verbindung mit der Portnummer und den Prozessdetails abzurufen.

    SELECT hip1.host_name "Source Host Name", outbound_connections_results0.source_ip "Source IP Address", hip2.host_name "Destination Host Name", outbound_connections_results0.destination_ip "Destination IP Address", outbound_connections_results0.frequency "Connection Frequency", outbound_connections_results0.destination_port "Destination Communication Port", outbound_connections_results0.servicename "Process Service Name", outbound_connections_results0.description "Process Service Description" FROM (SELECT DISTINCT o.source_ip, o.destination_ip, o.frequency, o.destination_port, ianap.servicename, ianap.description FROM outbound_query_helper o, iana_service_ports_import ianap WHERE o.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS outbound_connections_results0 LEFT OUTER JOIN hostname_ip_helper hip1 ON outbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER JOIN hostname_ip_helper hip2 ON outbound_connections_results0.destination_ip = hip2.ip_address

Über diese Abfrage werden die Informationen über den ausgehenden Datenverkehr für jeden Dienst abgerufen, zusammen mit der Portnummer und den Prozessdetails.

Bevor Sie diese Abfrage ausführen, müssen Sie, falls noch nicht geschehen, die iana_service_ports_import-Tabelle erstellen, die die von der IANA heruntergeladene Datenbank des IANA-Portregisters enthält. Weitere Informationen zum Erstellen dieser Tabelle finden Sie unter Die Importtabelle für die IANA-Portregistrierung wird erstellt.

Nach der Erstellung der Tabelle iana_service_ports_import erstellen Sie zwei Ansichtshilfsfunktionen zur Verfolgung des eingehenden Datenverkehrs. Informationen zum Erstellen einer Ansicht finden Sie unter CREATE VIEW im Amazon Athena Athena-Benutzerhandbuch.

So erstellen Sie Hilfsfunktionen für die Nachverfolgung des Imports
  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Erstellen Sie die Ansicht valid_inbound_ips_helper über die folgende Hilfsfunktion, die alle unterschiedlichen IP-Quelladressen für den eingehenden Datenverkehr auflistet.

    CREATE OR REPLACE VIEW valid_inbound_ips_helper AS SELECT DISTINCT "source_ip" FROM inbound_connection_agent;
  3. Erstellen Sie die Ansicht inbound_query_helper über die folgende Hilfsfunktion, die die Häufigkeit der Kommunikation für den eingehenden Datenverkehr ermittelt.

    CREATE OR REPLACE VIEW inbound_query_helper AS SELECT "agent_id" , "source_ip" , "destination_ip" , "destination_port" , "agent_assigned_process_id" , "count"(*) "frequency" FROM inbound_connection_agent WHERE (("ip_version" = 'IPv4') AND ("source_ip" IN (SELECT * FROM valid_inbound_ips_helper ))) GROUP BY "agent_id", "source_ip", "destination_ip", "destination_port", "agent_assigned_process_id";
  4. Nachdem Sie die iana_service_ports_import-Tabelle und Ihre zwei Hilfsfunktionen erstellt haben, können Sie die folgende Abfrage ausführen, um die Details zum eingehenden Datenverkehr für die jeweiligen Dienste in Verbindung mit der Portnummer und den Prozessdetails abzurufen.

    SELECT hip1.host_name "Source Host Name", inbound_connections_results0.source_ip "Source IP Address", hip2.host_name "Destination Host Name", inbound_connections_results0.destination_ip "Destination IP Address", inbound_connections_results0.frequency "Connection Frequency", inbound_connections_results0.destination_port "Destination Communication Port", inbound_connections_results0.servicename "Process Service Name", inbound_connections_results0.description "Process Service Description" FROM (SELECT DISTINCT i.source_ip, i.destination_ip, i.frequency, i.destination_port, ianap.servicename, ianap.description FROM inbound_query_helper i, iana_service_ports_import ianap WHERE i.destination_port = TRY_CAST(ianap.portnumber AS integer)) AS inbound_connections_results0 LEFT OUTER JOIN hostname_ip_helper hip1 ON inbound_connections_results0.source_ip = hip1.ip_address LEFT OUTER JOIN hostname_ip_helper hip2 ON inbound_connections_results0.destination_ip = hip2.ip_address

Mit dieser Abfrage wird die ausgeführte Software basierend auf den Portnummern identifiziert.

Bevor Sie diese Abfrage ausführen, müssen Sie, falls noch nicht geschehen, die iana_service_ports_import-Tabelle erstellen, die die von der IANA heruntergeladene Datenbank des IANA-Portregisters enthält. Weitere Informationen zum Erstellen dieser Tabelle finden Sie unter Die Importtabelle für die IANA-Portregistrierung wird erstellt.

Mit der folgenden Abfrage können Sie die ausgeführte Software basierend auf Portnummern identifizieren.

SELECT o.host_name "Host Name", ianap.servicename "Service", ianap.description "Description", con.destination_port, con.cnt_dest_port "Destination Port Count" FROM (SELECT agent_id, destination_ip, destination_port, Count(destination_port) cnt_dest_port FROM inbound_connection_agent GROUP BY agent_id, destination_ip, destination_port) con, (SELECT agent_id, host_name, Max("timestamp") FROM os_info_agent GROUP BY agent_id, host_name) o, iana_service_ports_import ianap WHERE ianap.transportprotocol = 'tcp' AND con.destination_ip NOT LIKE '172%' AND con.destination_port = ianap.portnumber AND con.agent_id = o.agent_id ORDER BY cnt_dest_port DESC;

Die Importtabelle für die IANA-Portregistrierung wird erstellt

Für einige der vordefinierten Abfragen ist eine Tabelle namens iana_service_ports_import erforderlich, die von der IANA (Internet Assigned Numbers Authority) heruntergeladene Informationen enthält.

So erstellen Sie die iana_service_ports_import-Tabelle
  1. Laden Sie die IANA Portregister-Datenbank-CSV-Datei vom Service Name and Transport Protocol Port Number Registry auf iana.org herunter.

  2. Laden Sie die Datei auf Amazon S3 hoch. Weitere Informationen finden Sie unter Wie lade ich Dateien und Ordner in einen S3-Bucket hoch?.

  3. Erstellen Sie in Athena eine neue Tabelle mit dem Nameniana_service_ports_import. Anweisungen finden Sie unter Tabelle erstellen im Amazon Athena Athena-Benutzerhandbuch. Im folgenden Beispiel müssen Sie my_bucket_name durch den Namen des S3-Buckets ersetzen, in den Sie die CSV-Datei im vorherigen Schritt hochgeladen haben.

    CREATE EXTERNAL TABLE IF NOT EXISTS iana_service_ports_import ( ServiceName STRING, PortNumber INT, TransportProtocol STRING, Description STRING, Assignee STRING, Contact STRING, RegistrationDate STRING, ModificationDate STRING, Reference STRING, ServiceCode STRING, UnauthorizedUseReported STRING, AssignmentNotes STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' WITH SERDEPROPERTIES ( 'serialization.format' = ',', 'quoteChar' = '"', 'field.delim' = ',' ) LOCATION 's3://my_bucket_name/' TBLPROPERTIES ('has_encrypted_data'='false',"skip.header.line.count"="1");